#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import subprocess

def fix_permissions():
    project_root = "/www/wwwroot/spvi.lingbankeji.com"
    
    # 需要特殊权限的目录和文件
    special_dirs = {
        'instance': 0o777,
        'logs': 0o777
    }
    
    # uwsgi日志文件路径
    uwsgi_log_path = "/www/wwwlogs/uwsgi.log"
    
    print("开始修复权限...")
    
    try:
        # 先设置整个项目目录的基本权限
        os.system(f"chown -R www:www {project_root}")
        os.system(f"chmod -R 755 {project_root}")
        print(f"✓ 已设置项目根目录权限: {project_root}")
        
        # 设置特殊目录的权限
        for dir_name, permission in special_dirs.items():
            dir_path = os.path.join(project_root, dir_name)
            
            # 确保目录存在
            os.makedirs(dir_path, exist_ok=True)
            
            # 设置权限
            os.chmod(dir_path, permission)
            os.system(f"chown -R www:www {dir_path}")
            
            # 验证权限
            current_perm = oct(os.stat(dir_path).st_mode)[-3:]
            print(f"✓ 已设置目录权限: {dir_path} -> {current_perm}")
        
        # 处理uwsgi日志文件
        uwsgi_log_dir = os.path.dirname(uwsgi_log_path)
        
        # 如果uwsgi.log是目录，则删除它
        if os.path.isdir(uwsgi_log_path):
            os.system(f"rm -rf {uwsgi_log_path}")
            
        # 确保日志目录存在
        os.makedirs(uwsgi_log_dir, exist_ok=True)
        
        # 创建日志文件（如果不存在）
        if not os.path.exists(uwsgi_log_path):
            open(uwsgi_log_path, 'a').close()
        
        # 设置日志文件权限
        os.system(f"chown www:www {uwsgi_log_path}")
        os.chmod(uwsgi_log_path, 0o666)
        print(f"✓ 已设置uwsgi日志文件权限: {uwsgi_log_path}")
            
        print("\n权限修复完成！")
        
    except Exception as e:
        print(f"错误: {str(e)}")

if __name__ == "__main__":
    fix_permissions() 